确定hive的map和reduce的task的数量

您所在的位置:网站首页 hive设置map reduce数量 确定hive的map和reduce的task的数量

确定hive的map和reduce的task的数量

2023-07-22 22:33| 来源: 网络整理| 查看: 265

        Hive的底层查询原理,也是讲sql语句转化为map-reduce进行查询和计算的,所以设置正确的map和reduce的task的数量对查询效率有很重要的影响。

1. 设置mapper的task数量

        在分布式计算系统中,决定map数量的一个因素就是原始数据,在不加干预的情况下,原始数据有多少个块,就可能有多少个起始的task,因为每个task对应要去读取一个块的数据;当然这个也不是绝对的,当文件数量特别多,并且每个文件的大小特别小,那么我们就可以限制减少初始map对相应的task的数量,以减少计算资源的浪费,如果文件数量较少,但是单个文件较大,我们就可以增加map的task的数量,以减小单个task的压力。

        在hive里面有个决定mapper的task数量的参数:mapred.map.tasks,因为决定mapper的task的数量因素相对比较复杂,所以这个参数不一定起作用,具体决定mapper的task数量的过程如下:

        (1)hive的文件基本上都是存储在HDFS上,而HDFS上的文件,都是分块儿的,所以具体的hive数据文件在HDFS上分多少块,就可能是默认的hive起始task的数量,我们记做:default_mapper_num。在网上还有人这么解释,就是用数据总大小除以dfs的默认最大块大小(total_size/dfs.block.size)来决定初始默认数据分区数,感觉可以这么想,但是具体的分块儿数量可不可以这么算,就感觉不一定了。

        (2)mapred.min.split.size和mapred.max.split.size分别就需要指定的是hive计算的时候的进行split的最大值和最小值,当然我们要根据这两个参数得出一个最终的split的size,具体公式:default_split_size = max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size))。

        (3)第二步中我们确定了数据的split的size,也就是说要将数据按照这个size划分为多少个block,具体计算方式:split_num = total_size/default_split_size;

        (4)接下来就是我们决定具体的mapper的task数量

        task_num = min(split_num, max(mapred.map.tasks, default_mapper_num))

        所以从上面的过程来看,task的数量通过各个方面的限制,不至于task的数量太多,也不至于task的数量太少。要想提高task数量,就要降低mapper.min.split.size的数值,在一定的范围内可以减小default_split_size的数值,从而增加split_num的数量,也可增大mapred.map.tasks的数量。如果要减少task的数量,我们就可以提高mapper.map.tasks的数量。

2.设置reduce的task数量  

        reducer的task的数量设置就相对简单了,如果我们设置了mapred.reduce.tasks这个参数,那么reduce的task的数量就直接是这个了,如果没有设置这个参数,那么具体的reduce的数量如下:

        hive.exec.reducers.max来决定reduce的最大数量;hive.exec.reducers.bytes.per.reducer这个参数确定的每个reducer的数据的输出量,当然我么假设总的数据输出量为total_size,那么reducer的数量为total_size/hive.exec.reducers.bytes.per.reducers,所以具体的reducers数量:reducer_num = min(total_size/hive.exec.reducers.bytes.per.reducers, hive.exec.reducers.max)。基本上每个reducer就要输出为一个文件,如果数据量不是很大,reducer的数量太多就会产生好多个小文件,如果reducer数量太少,那么每个文件的数量就会偏多,所以要根据实际需求合理确定reducer数量。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3